package net.lgy.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author 小滴课堂-二当家小D,
 * @since 2024-12-24
 */
@Schema(name = "AccountDO", description = "用户信息")
public class AccountDTO implements Serializable {

    @Schema(description = "ID")
    private Long id;

    @Schema(description = "用户名")
    private String username;
    private String pwd;

    @Schema(description = "用户头像")
    private String headImg;

    @Schema(description = "手机号")
    private String phone;

    @Schema(description = "用户角色 COMMON, ADMIN")
    private String role;

    @Schema(description = "逻辑删除（1删除 0未删除）")
    private Boolean del;

    @Schema(description = "创建时间")
    private Date gmtCreate;

    @Schema(description = "更新时间")
    private Date gmtModified;

    private String secret;

    private Long accountNo;
    /**
     * 根文件夹ID
     */
    private Long rootFileId;
    /**
     * 根文件夹名称
     */
    private String rootFileName;

    /**
     * 存储信息
     */
    private StorageDTO storageDTO;
    
    // 手动添加getter方法
    public Long getId() {
        return id;
    }
    
    public String getUsername() {
        return username;
    }
    
    public Long getAccountNo() {
        return accountNo;
    }
    
    public String getPhone() {
        return phone;
    }
    
    // 手动添加setter方法
    public void setId(Long id) {
        this.id = id;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
    
    public void setAccountNo(Long accountNo) {
        this.accountNo = accountNo;
    }
    
    public void setPhone(String phone) {
        this.phone = phone;
    }
    
    // 无参构造器
    public AccountDTO() {
    }
    
    // 有参构造器
    public AccountDTO(Long id, String username, String pwd, String headImg, String phone, String role, Boolean del, 
                     Date gmtCreate, Date gmtModified, String secret, Long accountNo, Long rootFileId, 
                     String rootFileName, StorageDTO storageDTO) {
        this.id = id;
        this.username = username;
        this.pwd = pwd;
        this.headImg = headImg;
        this.phone = phone;
        this.role = role;
        this.del = del;
        this.gmtCreate = gmtCreate;
        this.gmtModified = gmtModified;
        this.secret = secret;
        this.accountNo = accountNo;
        this.rootFileId = rootFileId;
        this.rootFileName = rootFileName;
        this.storageDTO = storageDTO;
    }
}
